Streaming media services include a content server, a content player, and a communications network connecting the content server to the content player. The content server is configured to store media files (or “streams”) made available to end users. Each stream may provide a digital version of a movie, a television program, a sporting event, a staged or live event captured by recorded video, etc. Streams also include media content created specifically for distribution online. Content files stored on the content server are typically organized according to playback chronology and store audio data and/or video data.
Media playback by a client device is typically referred as “streaming” because the content server transmits portions of a media file to the client device, which in turn decodes and initiates playback on the a client device without waiting for the complete stream to be received. To account for variable latency and bandwidth within the communications network, a content buffer on the client device queues incoming portions of the stream ahead of the portions actually being played. During moments of network congestion (which leads to lower available bandwidth) less data is added to the buffer, which may drain down as data is being de-queued to support playback at a certain playback bit rate. However, during moments of high network bandwidth, the buffer is replenished and additional buffer time is added until the buffer is generally full again. In practical systems, the buffer may queue data corresponding to a time span ranging from seconds to more than a minute.
Streaming digitally encoded audiovisual (AV) programs (including feature length films and television programs) over the Internet has become popular as the availability of high-bandwidth Internet communication has increased, and a variety of different streaming media protocols are available for transmitting media streams to the client. Although many of these protocols were designed to transmit media streams from a server to a conventional computing system, e.g., a typical desktop PC or laptop computer, or home theatre PC (HTPC), the streaming approach is also being used to transmit streaming media to a variety of end-user client devices; including, e.g., mobile telephones, tablet and net-book computing devices, console and handheld video game systems, digital video recorders (DVRs), DVD players, connected digital TVs, and dedicated media streaming devices, (e.g., the Roku® set-top box), etc.